package demo1;

class OuterClass{
    public int date1 = 1;
    private int date2 = 2;
    public static int date3 = 3;
    //静态内部类
    static class InnerClass {    //注意：所有静态类都不依赖于对象
        public int date4 = 4;
        private int date5 = 5;
        public static int date6 = 6;
        //可以写方法
        public static void  func() {
            System.out.println("静态内部类中的方法");
            /*System.out.println(date1);
            System.out.println(date2);  */ //会报错，需要引用对象来访问外部类中的成员属性
            OuterClass outerClass = new OuterClass();
            System.out.println(outerClass.date1);
            System.out.println(outerClass.date2);
        }
    }

    public void fun() {
        System.out.println(date1);
        System.out.println(date2);

        //System.out.println(InnerClass.date4);
       // System.out.println(InnerClass.date3);   //外部类中 也可以访问到静态内部类中的所有成员，包括private修饰的
    }
}

public class Test {
    public static void main(String[] args) {
        //初始化静态内部类中的对象 ， 类似于引用
        OuterClass.InnerClass innerClass = new OuterClass.InnerClass();

        OuterClass outerClass = new OuterClass();
        outerClass.fun();
    }
}
